/*
 * @lc app=leetcode.cn id=104 lang=cpp
 *
 * [104] 二叉树的最大深度
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution
{
 public:
  int maxDepth(TreeNode* root)
  {
    if (nullptr == root) return 0;
    int depth_left = maxDepth(root->left);    // 用递归的方法，左子树的深度
    int depth_right = maxDepth(root->right);  // 右子树的深度

    // 首先对于一个基本的树， 深度为2， 通过递归能够求出
    // 再引申到大树，也能满足
    return 1 + max(depth_left, depth_right);
  }
};
// @lc code=end
